Потоки (Streams) — это абстракция для работы с потоками данных, особенно полезная при работе с файлами, сетью и другими источниками ввода-вывода. Node.js предоставляет четыре основных типа потоков:
Работа с потоками позволяет обрабатывать данные по частям, не загружая в память весь объем сразу. Это особенно важно для больших файлов или сетевых соединений.
Пример чтения файла построчно:
import { createReadStream } from 'fs';
const stream = createReadStream('./large.txt', { encoding: 'utf8' });
stream.on('data', chunk => {
console.log('Часть данных:', chunk);
});
stream.on('end', () => {
console.log('Чтение завершено');
});
Пример записи данных в файл:
import { createWriteStream } from 'fs';
const stream = createWriteStream('./output.txt');
stream.write('Первая строка\n');
stream.write('Вторая строка\n');
stream.end();
Связывает readable и writable потоки:
import { createReadStream, createWriteStream } from 'fs';
const reader = createReadStream('./input.txt');
const writer = createWriteStream('./copy.txt');
reader.pipe(writer);
Создание потока, преобразующего входной текст в верхний регистр:
import { Transform } from 'stream';
const upperCaseTransform = new Transform({
transform(chunk, _encoding, callback) {
callback(null, chunk.toString().toUpperCase());
}
});
process.stdin.pipe(upperCaseTransform).pipe(process.stdout);
Если кто-то желает присоединиться - добро пожаловать. -Jame